From 8d2104fdc94fea4d4d32358058e6b8aecb4d86e7 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 3 Jan 2011 16:56:20 +0100 Subject: [PATCH] gdk: Move window_get_device_position function out of the device hooks --- gdk/gdkdisplay.c | 39 --------------------------------------- gdk/gdkdisplayprivate.h | 6 ------ gdk/gdkwindow.c | 36 ++++++++++++++++++++++++++++++++++-- 3 files changed, 34 insertions(+), 47 deletions(-) diff --git a/gdk/gdkdisplay.c b/gdk/gdkdisplay.c index 71bc00e76a..16fc483148 100644 --- a/gdk/gdkdisplay.c +++ b/gdk/gdkdisplay.c @@ -72,12 +72,6 @@ static void gdk_display_dispose (GObject *object); static void gdk_display_finalize (GObject *object); -static GdkWindow *gdk_window_real_window_get_device_position (GdkDisplay *display, - GdkDevice *device, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask); static GdkWindow *gdk_display_real_get_window_at_device_position (GdkDisplay *display, GdkDevice *device, gint *win_x, @@ -94,7 +88,6 @@ static guint signals[LAST_SIGNAL] = { 0 }; static const GdkDisplayDeviceHooks default_device_hooks = { gdk_display_real_get_device_state, - gdk_window_real_window_get_device_position, gdk_display_real_get_window_at_device_position }; @@ -694,38 +687,6 @@ gdk_display_real_get_window_at_device_position (GdkDisplay *display, return window; } -static GdkWindow * -gdk_window_real_window_get_device_position (GdkDisplay *display, - GdkDevice *device, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask) -{ - gint tmpx, tmpy; - GdkModifierType tmp_mask; - gboolean normal_child; - - normal_child = GDK_WINDOW_IMPL_GET_CLASS (window->impl)->get_device_state (window, - device, - &tmpx, &tmpy, - &tmp_mask); - /* We got the coords on the impl, convert to the window */ - tmpx -= window->abs_x; - tmpy -= window->abs_y; - - if (x) - *x = tmpx; - if (y) - *y = tmpy; - if (mask) - *mask = tmp_mask; - - if (normal_child) - return _gdk_window_find_child_at (window, tmpx, tmpy); - return NULL; -} - /** * gdk_display_get_window_at_pointer: * @display: a #GdkDisplay diff --git a/gdk/gdkdisplayprivate.h b/gdk/gdkdisplayprivate.h index ceea86bb8c..fc59bc3ce5 100644 --- a/gdk/gdkdisplayprivate.h +++ b/gdk/gdkdisplayprivate.h @@ -41,12 +41,6 @@ struct _GdkDisplayDeviceHooks gint *x, gint *y, GdkModifierType *mask); - GdkWindow * (* window_get_device_position) (GdkDisplay *display, - GdkDevice *device, - GdkWindow *window, - gint *x, - gint *y, - GdkModifierType *mask); GdkWindow * (* window_at_device_position) (GdkDisplay *display, GdkDevice *device, gint *win_x, diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 260746c990..b818cfca7f 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -4938,6 +4938,38 @@ gdk_window_get_pointer (GdkWindow *window, return gdk_window_get_device_position (window, display->core_pointer, x, y, mask); } +static GdkWindow * +gdk_window_real_window_get_device_position (GdkDisplay *display, + GdkDevice *device, + GdkWindow *window, + gint *x, + gint *y, + GdkModifierType *mask) +{ + gint tmpx, tmpy; + GdkModifierType tmp_mask; + gboolean normal_child; + + normal_child = GDK_WINDOW_IMPL_GET_CLASS (window->impl)->get_device_state (window, + device, + &tmpx, &tmpy, + &tmp_mask); + /* We got the coords on the impl, convert to the window */ + tmpx -= window->abs_x; + tmpy -= window->abs_y; + + if (x) + *x = tmpx; + if (y) + *y = tmpy; + if (mask) + *mask = tmp_mask; + + if (normal_child) + return _gdk_window_find_child_at (window, tmpx, tmpy); + return NULL; +} + /** * gdk_window_get_device_position: * @window: a #GdkWindow. @@ -4975,8 +5007,8 @@ gdk_window_get_device_position (GdkWindow *window, tmp_y = 0; display = gdk_window_get_display (window); - child = display->device_hooks->window_get_device_position (display, device, window, - &tmp_x, &tmp_y, &tmp_mask); + child = gdk_window_real_window_get_device_position (display, device, window, + &tmp_x, &tmp_y, &tmp_mask); if (x) *x = tmp_x; -- 2.30.2